Шаг 66 – Объект Report. Свойства и методы далее.

Установка значений параметрических полей.

Параметрические поля предназначены для запроса у пользователя дополнительных сведений в момент формирования отчета. Seagate не рекомендует использовать такие поля в отчетах, интегрированных в пользовательские приложения, а манипулировать формулами, или готовить источник данных в самом приложении. Однако категорического запрета нет, и если имеются такие поля, есть два возможных варианта дальнейших действий:

1. Оставить все как есть.В этом случае будет выведено стандартное окно-приглашение на ввод (или выбор) значения параметра.

2. Установить значения параметрических полей программно.

Второй вариант имеет ряд ограничений: поддерживаются только дискретные значения параметров. Диапазоны значений и множественный выбор не поддерживаются!

Все параметрические поля объекта Report входят в коллекцию ParameterFields, состоящую из объектов ParameterFieldDefenition, каждый из которых описывает свое параметрическое поле. Индексация элементов коллекции также начинается с единицы.

Для передачи значения в параметрическое поле служит метод AddCurrentValue. Давайте возьмем наш предыдущий пример, и предположим, что значение скидки передается в параметрическое поле:

If txtDiscount.Text = "" Then
    Report.ParameterFields(1).AddCurrentValue (0) 
Else
    Report. ParameterFields(1).AddCurrentValue (Val(txtDiscount.Text))
End If

Управление группами отчета.

О группах отчета уже говорилось. При разработке приложения может оказаться, что одному пользователю необходим отчет, сгруппированный по датам, другому – по товарам. Конечно, можно использовать два отдельных отчета, но объектная модель RDC позволяет управлять группировкой данных программно. Группировка по полям базы данных осуществляется в свойстве GroupConditionField объекта Area (область), который, в свою очередь является членом коллекции Areas. Можно считать «областями» главные секции отчета. Но если в отчете несколько одинаковых секций (например Details a, Details b ), все они представлены одной коллекцией Areas. Это позволяет при обращении к областям кроме числовых индексов применять их обозначения:

RH	Заголовок отчета
PH	Заголовок страницы
GHn	Заголовок группы
D	Подробности
GFn	Колонтитул группы
PF	Колонтитул страницы
RF	Колонтитул отчета

В качестве значения свойству GroupConditionField передается поле БД, по которому осуществляется группировка. Пример:

If b Then
		Report.Areas(“GH”). GroupConditionField=Report.Database.Tables(1). Fields(5)
		Report. Areas(“GH”).GroupCondition=crGCQuaterly
Else
		Report.Areas(“GH”). GroupConditionField=Report.Database.Tables(1). Fields(1)
		Report. Areas(“GH”).GroupCondition=crGCAnyValue
End if

Автор Юрий Гвоздев.
Hosted by uCoz